﻿using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;

namespace Ebusiness_OrderService.Services.Dtos.Order
{
    public class OrderDto : EntityDto<Guid>
    {
        public string? OrderNo { get; set; }                    // 系统订单编号（唯一）
        public Guid? UserId { get; set; }                      // 下单用户ID（可为空，用于游客订单）

        public string? UserName { get; set; }                   // 用户名称（冗余）

        public string? OrderType { get; set; }                  // 订单类型（商品订单、服务订单、订阅等）

        public decimal? TotalAmount { get; set; }               // 订单总金额（含税）
        public decimal? DiscountAmount { get; set; }            // 优惠金额
        public decimal? PayableAmount { get; set; }             // 应付金额（总额 - 优惠）

        public string Currency { get; set; } = "CNY";          // 币种

        public string? PaymentStatus { get; set; }              // 支付状态（待支付、已支付、已退款）

        public string? OrderStatus { get; set; }                // 订单状态（待处理、已完成、已取消）

        public string? PaymentMethod { get; set; }              // 支付方式（微信、支付宝、银行卡等）
        public DateTime? PaidTime { get; set; }                // 支付时间

        public string? ShippingStatus { get; set; }             // 配送状态（未发货、已发货、已收货）
        public DateTime? ShippedTime { get; set; }             // 发货时间
        public DateTime? DeliveredTime { get; set; }           // 收货/完成时间

        public string? RecipientName { get; set; }              // 收货人姓名

        public string? RecipientPhone { get; set; }             // 收货人电话

        public string? ShippingAddress { get; set; }            // 收货地址

        public string? Note { get; set; }                       // 买家备注/留言

        public string? AdminNote { get; set; }                  // 管理员备注
        public bool IsDeleted { get; set; } = false;           // 是否逻辑删除
        public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // 创建时间
        public DateTime? UpdatedAt { get; set; } = DateTime.UtcNow;            // 更新时间
    }
}
